//
//  JDStatusBarStyle.m
//  JDStatusBarNotificationExample
//
//  Created by Markus on 04.12.13.
//  Copyright (c) 2013 Markus. All rights reserved.
//

#import "JDStatusBarStyle.h"

NSString *const JDStatusBarStyleError   = @"JDStatusBarStyleError";
NSString *const JDStatusBarStyleWarning = @"JDStatusBarStyleWarning";
NSString *const JDStatusBarStyleSuccess = @"JDStatusBarStyleSuccess";
NSString *const JDStatusBarStyleMatrix  = @"JDStatusBarStyleMatrix";
NSString *const JDStatusBarStyleDefault = @"JDStatusBarStyleDefault";
NSString *const JDStatusBarStyleDark    = @"JDStatusBarStyleDark";

@implementation JDStatusBarStyle

- (instancetype)copyWithZone:(NSZone*)zone;
{
    JDStatusBarStyle *style = [[[self class] allocWithZone:zone] init];
    style.barColor = self.barColor;
    style.textColor = self.textColor;
    style.textShadow = self.textShadow;
    style.font = self.font;
    style.textVerticalPositionAdjustment = self.textVerticalPositionAdjustment;
    style.animationType = self.animationType;
    style.progressBarColor = self.progressBarColor;
    style.progressBarHeight = self.progressBarHeight;
    style.progressBarPosition = self.progressBarPosition;
    return style;
}

+ (NSArray*)allDefaultStyleIdentifier;
{
    return @[JDStatusBarStyleError, JDStatusBarStyleWarning,
             JDStatusBarStyleSuccess, JDStatusBarStyleMatrix,
             JDStatusBarStyleDark];
}

+ (JDStatusBarStyle*)defaultStyleWithName:(NSString*)styleName;
{
    // setup default style
    JDStatusBarStyle *style = [[JDStatusBarStyle alloc] init];
    style.barColor = [UIColor yellowColor];
    style.progressBarColor = [UIColor greenColor];
    style.progressBarHeight = 1.0;
    style.progressBarPosition = JDStatusBarProgressBarPositionBottom;
    style.textColor = [UIColor BVBaseOrangeColor];
    style.font = [UIFont systemFontOfSize:12.0];
    style.animationType = JDStatusBarAnimationTypeMove;
    
    // JDStatusBarStyleDefault
    if ([styleName isEqualToString:JDStatusBarStyleDefault]) {
        return style;
    }
    
    // JDStatusBarStyleError
    else if ([styleName isEqualToString:JDStatusBarStyleError]) {
        style.barColor = [UIColor colorWithRed:0.588 green:0.118 blue:0.000 alpha:1.000];
        style.textColor = [UIColor whiteColor];
        style.progressBarColor = [UIColor redColor];
        style.progressBarHeight = 2.0;
        return style;
    }
    
    // JDStatusBarStyleWarning
    else if ([styleName isEqualToString:JDStatusBarStyleWarning]) {
        style.barColor = [UIColor colorWithRed:0.900 green:0.734 blue:0.034 alpha:1.000];
        style.textColor = [UIColor darkGrayColor];
        style.progressBarColor = style.textColor;
        return style;
    }
    
    // JDStatusBarStyleSuccess
    else if ([styleName isEqualToString:JDStatusBarStyleSuccess]) {
        //255 86 21
//        style.barColor = [UIColor colorWithRed:74/255.0 green:187/255.0 blue:229/255.0 alpha:1.000];
        style.barColor = [UIColor yellowColor];
        style.textColor = [UIColor BVBaseOrangeColor];
        style.progressBarColor = [UIColor colorWithRed:0.106 green:0.594 blue:0.319 alpha:1.000];
        style.progressBarHeight = 1.0+1.0/[[UIScreen mainScreen] scale];
        return style;
    }
    
    // JDStatusBarStyleDark
    else if ([styleName isEqualToString:JDStatusBarStyleDark]) {
        style.barColor = [UIColor colorWithRed:0.050 green:0.078 blue:0.120 alpha:1.000];
        style.textColor = [UIColor colorWithWhite:0.95 alpha:1.0];
        style.progressBarHeight = 1.0+1.0/[[UIScreen mainScreen] scale];
        return style;
    }
    
    // JDStatusBarStyleMatrix
    else if ([styleName isEqualToString:JDStatusBarStyleMatrix]) {
        style.barColor = [UIColor blackColor];
        style.textColor = [UIColor greenColor];
        style.font = [UIFont fontWithName:@"Courier-Bold" size:14.0];
        style.progressBarColor = [UIColor greenColor];
        style.progressBarHeight = 2.0;
        return style;
    }
    
    return nil;
}

@end
